package com.bigdata.mapreduce.compare_;

public class Student implements Comparable<Student> {
    private String name;
    private Integer age;

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    /*
        作为排序比较器，需要得到2个对象大小比较的结果
            1 or 正数：表示调用方法的dog对象大于方法形参的dog对象
            0：表示调用方法的dog对象等于方法形参的dog对象
            -1 or 负数：表示调用方法的dog对象小于方法形参的dog对象
        作为分组比较器，需要得到2个对象是否相等
            相等 -》0：对象属于一组，由一个reduce方法处理
            不相等 -》非0：对象不属于一组，不同的reduce方法处理
        分组比较器可以复用排序比较器
         */
    @Override
    public int compareTo(Student s) {
        // 实现name、age升序；创建对象添加到TreeSet，观察结果。
        // 如果name比较的结果不是0, 那么就按照结果来排序
        // 如果name比较的结果是0, 此时来比较age
        int compare = -name.compareTo(s.name);
        if(compare == 0) {
            return -Integer.compare(age, s.age);
            // return -(age - s.age);
        }
        return compare;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
